{"type":"module"}の理解
package.jsonのtypeに"module"が指定されると、そのパッケージのJavaScriptファイルは全てESM扱いになる
ESMであるパッケージはCJSをimport出来ない
requireも出来ない、というかrequireが無い
TypeScriptは実行時(ts-nodeなど)に必ずCJSかESMに変換される?
tsconfig.jsonのmoduleで決まる
ts-nodeでESMのimportが使えなかったりするのは、変換後のJavaScriptがCJSで、package.jsonの{"type": "module"}でESM扱いになっていないから?
tsconfig.jsonのmoduleを"commonjs""にすると動くのは、CJSに変換されimportがrequireに置き換わるから